package view;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

import clases.casillas.Casilla;

import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.util.ArrayList;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;

import controlador.Tragamonedas;

public class PanelAltaCasilla extends JPanel implements FocusListener,ActionListener {


	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Tragamonedas sys;
	private JRadioButton rdbtnSimple;
	private JRadioButton rdbtnComodin;
	private JLabel lblCasillasSeleccionadas;
	private JComboBox<String> comboBox_CasillasSeleccionadas;
	private JButton btnQuitarCasilla;
	private JButton btnAgregarCasilla;
	private JTextField textField_NombreCasilla;
	private JLabel lblNombre;
	private JComboBox<String> comboBox_CasillasDisponibles;
	private JButton btnCrear;
	private JLabel lblAltaCasilla;
	private JLabel lblTipoDeCasilla;
	private JLabel lblFrutas;





	
	public PanelAltaCasilla (Tragamonedas sys) {
		setLayout(null);
		this.sys = sys;
		
		lblAltaCasilla = new JLabel("Alta Casilla");
		lblAltaCasilla.setBounds(110, 25, 123, 16);
		lblAltaCasilla.setFont(new Font("Tahoma", Font.BOLD, 13));
		add(lblAltaCasilla);
		
		btnCrear = new JButton("Crear Casilla");
		btnCrear.addActionListener(this);
			
		btnCrear.setBounds(141, 266, 148, 23);
		add(btnCrear);


		lblTipoDeCasilla = new JLabel("Tipo de Casilla:");
		lblTipoDeCasilla.setBounds(26, 127, 91, 14);
		add(lblTipoDeCasilla);

		rdbtnSimple = new JRadioButton("Simple");
		rdbtnSimple.addFocusListener(this);
		rdbtnSimple.setBounds(123, 123, 109, 23);
		rdbtnSimple.setSelected(true);
		add(rdbtnSimple);

		rdbtnComodin = new JRadioButton("Comodin");
		rdbtnComodin.addFocusListener(this);
		rdbtnComodin.setBounds(234, 123, 109, 23);
		add(rdbtnComodin);

		lblFrutas = new JLabel("Casillas disponibles:");
		lblFrutas.setBounds(27, 163, 137, 14);
		add(lblFrutas);

		comboBox_CasillasDisponibles = new JComboBox<String>();
		comboBox_CasillasDisponibles.setBounds(189, 155, 148, 22);
		add(comboBox_CasillasDisponibles);

		ArrayList<Casilla> tempCasillas = sys.getCasillas();
		for (Casilla casilla : tempCasillas) {
			comboBox_CasillasDisponibles.addItem(casilla.getNombre());
		}
		

		lblCasillasSeleccionadas = new JLabel("Casilla(s) seleccionada(s):");
		lblCasillasSeleccionadas.setBounds(27, 200, 137, 14);
		lblCasillasSeleccionadas.setVisible(false);
		add(lblCasillasSeleccionadas);

		comboBox_CasillasSeleccionadas = new JComboBox<String>();
		comboBox_CasillasSeleccionadas.setBounds(189, 192, 148, 22);
		add(comboBox_CasillasSeleccionadas);
		comboBox_CasillasSeleccionadas.setVisible(false);

		btnQuitarCasilla = new JButton("Quitar Casilla");
		btnQuitarCasilla.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				comboBox_CasillasSeleccionadas
				.removeItem(comboBox_CasillasSeleccionadas
						.getSelectedItem());
			}
		});
		
		
		btnQuitarCasilla.setBounds(195, 232, 148, 23);
		add(btnQuitarCasilla);
		btnQuitarCasilla.setVisible(false);
		
		btnAgregarCasilla = new JButton("Agregar Casilla");
		btnAgregarCasilla.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				comboBox_CasillasSeleccionadas
				.addItem((String) comboBox_CasillasDisponibles
						.getSelectedItem());
			}
		});
		
		btnAgregarCasilla.setVisible(false);
		
		btnAgregarCasilla.setBounds(37, 232, 127, 23);
		add(btnAgregarCasilla);
		
		lblNombre = new JLabel("Nombre:");
		lblNombre.setBounds(26, 82, 72, 14);
		add(lblNombre);
		
		textField_NombreCasilla = new JTextField();
		textField_NombreCasilla.setBounds(189, 79, 148, 20);
		add(textField_NombreCasilla);
		textField_NombreCasilla.setColumns(10);

	}

	@Override
	public void focusGained(FocusEvent event) {
		if (event.getSource() == rdbtnSimple) {
			rdbtnComodin.setSelected(false);
			comboBox_CasillasSeleccionadas.setVisible(false);
			btnQuitarCasilla.setVisible(false);
			lblCasillasSeleccionadas.setVisible(false);
			btnAgregarCasilla.setVisible(false);
		} else if (event.getSource() == rdbtnComodin) {
			comboBox_CasillasSeleccionadas.removeAllItems();
			this.repaint();
			rdbtnSimple.setSelected(false);
			comboBox_CasillasSeleccionadas.setVisible(true);
			btnQuitarCasilla.setVisible(true);
			lblCasillasSeleccionadas.setVisible(true);
			btnAgregarCasilla.setVisible(true);
		} 

	}

	@Override
	public void focusLost(FocusEvent event) {
		if (event.getSource() == rdbtnSimple) {
			rdbtnComodin.setSelected(false);
			comboBox_CasillasSeleccionadas.setVisible(false);
			btnQuitarCasilla.setVisible(false);
			lblCasillasSeleccionadas.setVisible(false);
			btnAgregarCasilla.setVisible(false);
		} else if (event.getSource() == rdbtnComodin) {
			comboBox_CasillasSeleccionadas.removeAllItems();
			this.repaint();
			
			rdbtnSimple.setSelected(false);
			comboBox_CasillasSeleccionadas.setVisible(true);
			btnQuitarCasilla.setVisible(true);
			lblCasillasSeleccionadas.setVisible(true);
			btnAgregarCasilla.setVisible(true);
		}

	}

	@Override
	public void actionPerformed(ActionEvent event) {
		if (event.getSource() == btnCrear){
			
			ArrayList<String> tempListaCasillas = new ArrayList<String>();

			int tempInt = comboBox_CasillasSeleccionadas.getItemCount();
			for (int i = 0; i < tempInt; i++) {
				tempListaCasillas.add((String) comboBox_CasillasSeleccionadas
						.getItemAt(i));
			}
			sys.agregarCasilla(textField_NombreCasilla.getText(), tempListaCasillas);
	
			comboBox_CasillasDisponibles.removeAllItems();
			
			ArrayList<Casilla> tempCasillas = sys.getCasillas();
			for (Casilla casilla : tempCasillas) {
				comboBox_CasillasDisponibles.addItem(casilla.getNombre());
			}
			
			JOptionPane.showMessageDialog(null,
					"Se ha creado la casilla " + textField_NombreCasilla.getText(), "Informacion",
					JOptionPane.OK_OPTION);
			
		}
		
	}
}
